home *** CD-ROM | disk | FTP | other *** search
/ DS-CD ROM 2 1993 August / DS CD-ROM 2.Ausgabe (August 1993).iso / programm / ds0257 / lib.exe / SQUEUE.LIB < prev    next >
Text File  |  1992-02-02  |  3KB  |  198 lines

  1. #IF !LIB4A86
  2. #ELSE
  3. #IF !INTERN_LIB4A86_S
  4. INTERN_LIB4A86_S EQU 01
  5. JMP START
  6. #ENDIF
  7. #ENDIF
  8. SQUEUEHEADER STRUC
  9. SQUEUELENGTH DW ?
  10. SQUEUEFREE DW ?
  11. SQUEUEUSED DW ?
  12. SQUEUEIPTR DW ?
  13. SQUEUEOPTR DW ?
  14. SQUEUESEM DB ?
  15. SQUEUEDUMMY DB ?
  16. SQUEUEUSERDATA1 DW ?
  17. SQUEUEUSERDATA2 DW ?
  18. ENDS
  19. SQUEUEHEADERLENGTH EQU (TYPE SQUEUEHEADER)
  20. FIRSTSQUEUEENTRY EQU TYPE ( SQUEUEHEADER)
  21. MINSQUEUE EQU 256XD
  22. SETSQUEUESEMAPHOR EQU 0FFH
  23. FREESQUEUESEMAPHOR EQU 000H
  24. SQUEUEISEMPTY EQU 08301H
  25. SQUEUEISFULL EQU 08302H
  26. SQUEUELENGTHERROR EQU 08303H
  27. SQUEUEAKTIVERROR EQU 083FFH
  28. SQUEUESEG DW 0
  29. INTERN_CHECKSQUEUESEMAPHOR MACRO
  30. MOV AX,SQUEUEAKTIVERROR
  31. XCHG ES:SQUEUESEM,AL
  32. CMP AL,FREESQUEUESEMAPHOR
  33. JE >M1
  34. STC
  35. RET
  36. M1:
  37. #EM
  38. INTERN_FREESQUEUESEMAPHOR MACRO
  39. MOV ES:SQUEUESEM,FREESQUEUESEMAPHOR
  40. #EM
  41. INITSQUEUE:
  42. CMP CX,MINSQUEUE
  43. JAE >L1
  44. MOV AX,SQUEUELENGTHERROR
  45. STC
  46. RET
  47. L1:
  48. MOV CS:SQUEUESEG,ES
  49. MOV ES:SQUEUESEM,SETSQUEUESEMAPHOR
  50. MOV ES:SQUEUELENGTH,CX
  51. INTERN_DELETESQUEUE:
  52. SUB CX,SQUEUEHEADERLENGTH
  53. MOV ES:SQUEUEFREE,CX
  54. MOV AX,FIRSTSQUEUEENTRY
  55. MOV ES:SQUEUEIPTR,AX
  56. MOV ES:SQUEUEOPTR,AX
  57. XOR AX,AX
  58. MOV ES:SQUEUEUSED,AX
  59. INTERN_FREESQUEUESEMAPHOR
  60. RET
  61. DELETESQUEUE_A:
  62. MOV ES,CS:SQUEUESEG
  63. DELETESQUEUE:
  64. INTERN_CHECKSQUEUESEMAPHOR
  65. MOV CX,ES:SQUEUELENGTH
  66. JMP SHORT INTERN_DELETESQUEUE
  67. LOCKSQUEUE_A:
  68. MOV ES,CS:SQUEUESEG
  69. LOCKSQUEUE:
  70. INTERN_CHECKSQUEUESEMAPHOR
  71. RET
  72. UNLOCKSQUEUE_A:
  73. MOV ES,CS:SQUEUESEG
  74. UNLOCKSQUEUE:
  75. INTERN_FREESQUEUESEMAPHOR
  76. RET
  77. GETSQUEUESTATISTIK_A:
  78. MOV ES,CS:SQUEUESEG
  79. GETSQUEUESTATISTIK:
  80. INTERN_CHECKSQUEUESEMAPHOR
  81. MOV DX,ES:SQUEUELENGTH
  82. SUB DX,SQUEUEHEADERLENGTH
  83. MOV CX,ES:SQUEUEFREE
  84. MOV AX,ES:SQUEUEUSED
  85. INTERN_FREESQUEUESEMAPHOR
  86. RET
  87. WRITESQUEUE_A:
  88. MOV ES, CS:SQUEUESEG
  89. WRITESQUEUE:
  90. CLD
  91. INTERN_CHECKSQUEUESEMAPHOR
  92. PUSH DI,SI,CX
  93. MOV AX,ES:SQUEUEFREE
  94. CMP CX,AX
  95. JBE >L1
  96. POP CX
  97. PUSH AX
  98. MOV AX,SQUEUEISFULL
  99. JMP >L8
  100. L1:
  101. SUB ES:SQUEUEFREE,CX
  102. ADD ES:SQUEUEUSED,CX
  103. MOV AX,ES:SQUEUELENGTH
  104. MOV DI,ES:SQUEUEIPTR
  105. SUB AX,DI
  106. CMP AX,CX
  107. JAE >L1
  108. SUB CX,AX
  109. XCHG CX,AX
  110. REP MOVSB
  111. MOV CX,AX
  112. MOV DI,FIRSTSQUEUEENTRY
  113. L1:
  114. REP MOVSB
  115. CMP DI,ES:SQUEUELENGTH
  116. IF A MOV DI,FIRSTSQUEUEENTRY
  117. MOV ES:SQUEUEIPTR,DI
  118. CLC
  119. JMP >L9
  120. L8:
  121. STC
  122. L9:
  123. POP CX,SI,DI
  124. INTERN_FREESQUEUESEMAPHOR
  125. RET
  126. READSQUEUE_A:
  127. MOV ES, CS:SQUEUESEG
  128. READSQUEUE:
  129. CLD
  130. JCXZ RET
  131. INTERN_CHECKSQUEUESEMAPHOR
  132. PUSH ES,DS,DI,SI,DX
  133. XCHG ES,DS
  134. MOV DI,SQUEUEOPTR
  135. XCHG DI,SI
  136. MOV AX,SQUEUEISEMPTY
  137. CMP SQUEUEUSED,0
  138. JE >L8
  139. L1:
  140. CMP SQUEUEUSED,CX
  141. IF B MOV CX,SQUEUEUSED
  142. SUB SQUEUEUSED,CX
  143. ADD SQUEUEFREE,CX
  144. MOV DX,CX
  145. MOV AX,SQUEUELENGTH
  146. SUB AX,SI
  147. CMP AX,CX
  148. JAE >L1
  149. SUB CX,AX
  150. XCHG CX,AX
  151. REP MOVSB
  152. MOV CX,AX
  153. MOV SI,FIRSTSQUEUEENTRY
  154. L1:
  155. REP MOVSB
  156. CMP SI,SQUEUELENGTH
  157. IF A MOV SI,FIRSTSQUEUEENTRY
  158. MOV SQUEUEOPTR,SI
  159. MOV CX,DX
  160. CLC
  161. JMP >L9
  162. L8:
  163. STC
  164. L9:
  165. POP DX,SI,DI,DS,ES
  166. INTERN_FREESQUEUESEMAPHOR
  167. RET
  168. #IF !INTERN_CMARK0
  169. INTERN_CMARK0 EQU 01H
  170. INTERN_CMARK1:
  171. PUSH BP
  172. MOV BP,SP
  173. MOV BX,06H
  174. SUB CH,[BP+SI]
  175. SUB AH,[BX+SI]
  176. DEC SP
  177. DEC CX
  178. INC DX
  179. XOR AL,041H
  180. CMP B[02820H],DH
  181. INC BX
  182. SUB W[BX+SI],SP
  183. INC DX
  184. CS AND B[BP+DI+043H],DL
  185. DEC AX
  186. INC BP
  187. DEC BP
  188. DEC BP
  189. INC BP
  190. PUSH DX
  191. AND B[BP+SI],CH
  192. SUB CH,[BP+SI]
  193. POP DX
  194. MOV SP,BP
  195. POP BP
  196. RET
  197. #ENDIF
  198.